The Small Computer Systems Interface (SCSI) standard has become a widely adopted architecture for use in storage systems. SCSI moves data among computer systems in units called “blocks” to provide high-performance data storage. A limitation of SCSI, however, is the distance between the computer system and the SCSI block-based storage device.
Internet SCSI (iSCSI) is a protocol that uses the transmission control protocol (TCP) to transport SCSI commands, enabling the use of the existing TCP/IP networking infrastructure as a storage area network (SAN). iSCSI presents SCSI targets and devices to iSCSI initiators (servers, requesters). iSCSI makes block devices available via the network. Block devices are presented across an IP network to the computer system. iSCSI can provide the transport of high performance block-based storage data of SCSI devices over a common IP network, and thus removes distance limitations of traditional SCSI.
iSCSI may provide access in a virtualized distributed storage system via a virtual appliance executing as a virtual machine (VM) in a virtualization system. A virtual machine refers to a software-based implementation of a machine in the virtualization system, in which the hardware resources of a physical “bare metal” computer (e.g., CPU, memory, etc.) are virtualized into the underlying support for the virtual machine, which can run its own operating system and applications on the underlying physical resources of the physical computer. A virtualized distributed storage system may comprise the aggregation of physical storage among the physical computers that comprise the virtualization system, which can be allocated as virtual disks that VMs can access. A virtual appliance that executes as a virtual machine in the virtualization system can therefore provide iSCSI services to virtual disks in the virtualization system.
Some challenges present themselves using a virtual appliance for iSCSI I/O. Virtual machines are bound by a scheduler in the hypervisor of the physical machine, which manages the deployment and execution of VMs. The virtual appliance is just another virtual machine, that has to wait its turn in the CPU queue along all the other virtual machines. Accordingly, the virtual appliance may not get enough CPU, potentially impacting turnaround times in processing I/O operations.